"""
building arguments from command line
"""


import argparse


def build_args():
    parse = argparse.ArgumentParser(description='帮助文档\n\nraw 直接调用RESTFUL API\nraw GET /redfish/v1/Systems', formatter_class=argparse.RawTextHelpFormatter)
    parse.add_argument('-r', help='主机地址', required=True)
    parse.add_argument('-u', help='账户', required=True)
    parse.add_argument('-p', help='密码', required=True)
    parse.add_argument('command', help='command命令\n'
                                       'info --> 获取服务器信息\n'
                                       'restart --> 重启服务器(已启动就重启,未启动就启动)\n'
                                       'start --> 启动服务器\n'
                                       'stop --> 停止服务器\n'
                                       'status --> 查看服务器电源状态\n'
                                       'getbios --> 获取BIOS属性的JSON数组, 响应格式: [{key: "xxx", value: "xxx"},{"key": "xxx", value: "xxx"}]\n'
                                       'setbios --> 设置BIOS属性, 参数格式: \'{"Attributes": {"key": "value", "key": "value"}}\'\n'
                                       'findbios --> 查询BIOS属性的值, 参数示例: USB003, 响应格式: {"key": "value"}\n'
                                       'resetbios --> 重置BIOS所有属性, 暂不可用\n'
                                       'getpd --> 获取物理磁盘(physical disk), 响应格式: [{id: "磁盘ID", name: "磁盘名称", state: "磁盘状态"}]\n'
                                       'createvd --> 创建虚拟磁盘(virtual disk), 参数格式: {}\n'
                                       'ejectvm --> 卸载虚拟光驱的镜像\n'
                                       'injectvm --> 挂载镜像到虚拟光驱, 参数示例: nfs://10.1.1.100/data/nfs/iso/CentOS7.iso\n'
                                       'connectvm --> 卸载虚拟光驱的镜像后挂载, 参数示例: nfs://10.1.1.100/data/nfs/iso/CentOS7.iso\n'
                                       'boot2cd --> 将BIOS启动项修改为: UEFI模式, Once(仅当次生效), Cd(从虚拟光驱启动)\n'
                                       'osinstall --> 安装操作系统, 参数格式: \'{"iso": "nfs://10.1.1.100/data/nfs/iso/CentOS7.iso", "log": "/tmp/install.log"}\'\n')
    parse.add_argument('-d', help='命令参数,需要用双引号包裹,对应command命令的参数,格式可能是JSON字符串,也可能是普通字符串或URL地址,注意看帮助文档', required=False)
    return parse.parse_args()
